There is a limit to the number of input/output (I/O) accesses that can be effectively performed by a RAID (redundant array of inexpensive disks) group of disks at any one time. One conventional data storage system controls the number of I/O accesses that are currently performed on a RAID group of disks using credits. That is, each I/O request is considered to consume a certain number of credits depending on a type of the I/O request (e.g., a read request, a write request, a read-modify-write request, etc.) and the particular RAID level for the RAID group. When the system begins processing an I/O request, the system increases an overall credit count by the particular number of credits associated with that I/O request. Similarly, when the system finishes processing that I/O request, the system decreases the overall credit count by the particular number of credits associated with that I/O request.
To impose a limit on the number of I/O accesses that are currently performed on a RAID group, the system processes new I/O requests only when the overall credit count does not exceed a predefined credit threshold. If the overall credit count exceeds the predefined credit threshold, the system considers the RAID group to be fully loaded and temporarily blocks processing of new I/O requests. Once the overall credit count drops below the predefined credit threshold due to completion of one or more previously started I/O requests, the system allows processing of new I/O requests.